perm filename HEAD.SAI[11,ALS] blob sn#083843 filedate 1974-01-28 generic text, type T, neo UTF8
00010	BEGIN "HEAD"
00020	DEFINE ⊂="COMMENT";  ⊂ 8/28/73 Lists header info on line and in file with
00030	  extension of HDX;
00040	DEFINE ⊃="⊂"; ⊂ Change this symbol to mean "" to get running commentary;
00050	⊂ Program UPDATE is used to incorporate corrected data into the header;
00060	⊂ Program CONVER.SAI is used to convert OLDPH files to the NEWPH format
00070	    and to prepare a list of the header for manual corrections which is
00080	    called XXX.HDR;
00090	
00100	REQUIRE "BLOCKX.HDR[11,ALS]" SOURCE_FILE;
00110	INTEGER ARRAY LFILE[0:'177];
00120	INTEGER ARRAY SYMBOL[0:127];
00125	STRING ARRAY SAMPLE[0:127];
00130	INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
00140	INTERNAL INTEGER FLAG,CFLAG,RFLAG,UPCNT,TABTOT;
00150	INTERNAL INTEGER SEGC,INTOT,SEGTOT,HINT,BPT,PHW,SMOCNT,SMCNT2,ZCNT;
00160	INTEGER SUM,S1,S2,S3,S4,RL;
00170	INTEGER HINCNT,HCOUNT,HINDEX,EOF,EOFA,EOFB,BRK;
00180	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
00190	STRING READ1,READ2,READ3,FILEL,FILEI,TFILE,TFILEI,FILLST,PREHINT;
00200	BOOLEAN ER;
00205	LABEL ZOUT,ZZOUT;
00210	
00220	PROCEDURE OUTALL(STRING S);
00230	BEGIN
00240	STRING SS; INTEGER J;
00250	SETBREAK(18,0,NULL,"OSN");
00260	SS←SCAN(S,18,J);
00270	OUTSTR(SS);
00280	END;
     

00010	STDBRK(1);
00020	 SETBREAK(14,"∃",NULL,"INS");
00030	 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
00040	 SETBREAK(16,'56,NULL,"INA");
00050	 SETBREAK(17,'12,'15,"INS");
00060	
00070	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
00080	OUTSTR("This program will list header information in man-readable form."&crlf);
00090	
00100	CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
00110	LOOKUP(CHAN4,"MAP.PHN",ER);
00120	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find MAP.PHN[NET,NJM].  File = ");
00130	LOOKUP(CHAN4,TFILE←INCHWL,ER); END;  EOFA←0;
00140	FILLST←INPUT(CHAN4,14);
00150	⊂ OUTSTR("MAP.PHN contains "&CRLF&FILLST&CRLF);
00160	CLOSE(CHAN4);
00170	
00180	FOR I←0 STEP 1 UNTIL 127 DO  BEGIN
00190	  WHILE TRUE DO BEGIN
00200	    READ1←SCAN(FILLST,17,K);
00210	    READ3←READ1[1 TO 1];
00220	    IF READ3≠"⊂"  THEN DONE; END;
00230	IF READ3="" THEN DONE;
00240	  SYMBOL[I]←CVASC(SCAN(READ1,15,K));
00250	  SAMPLE[I]←READ1; END;
00260	
00270	
00280	WHILE TRUE DO BEGIN "LISTREAD"
00290	OUTSTR("Data file to be used(type name or CR to terminate) ");
00295	FILEI←INCHWL;
00300	IF FILEI="" THEN DONE;
00310	CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
00320	LOOKUP(CHAN4,FILEI,ER);
00330	WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEI&" File = ");
00340	LOOKUP(CHAN4,FILEI←INCHWL,ER); END;  EOFA←0;
00350	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
00360	SEGTOT←(LFILE[0]*6)%256;
00370	⊃ OUTSTR(FILEI&" "&CVS(SEGTOT)&"   ");
00380	OUTSTR(CRLF&"Symbol"&TB&"Start"&TB&"Length"&TB&"Sample"&TB&"Features"&CRLF&LF);
00390	CLOSE(CHAN4);
00400	
00410	READ2←FILEI;
00420	READ1←SCAN(READ2,16,J)&"HDX";
00430	⊃ OUTSTR("Ready to write "&READ1&TB);
00440	OPEN(CHAN4,"DSK",0,0,10,0,0,EOF);
00450	ENTER(CHAN4,READ1,0);
00460	OUT(CHAN4,"⊂ Header information from file   "&FILEI&"."&TB&TB&DATIME&CRLF);
00470	OUT(CHAN4,"⊂  Produced by program HEAD[11,ALS] and filed in  "&READ1&"."&CRLF);
00480	OUT(CHAN4,"⊂  This file may be corrected and used as input for "&
00490	      "program UPDATE[11,ALS]."&CRLF);
00500	OUT(CHAN4,"⊂ "&CRLF&"⊂ ");
00510	  FOR I←0 STEP 1 UNTIL 9 DO OUT(CHAN4,CVS(LFILE[I])&TB);
00520	OUT(CHAN4,CRLF&"⊂ ");
00530	  FOR I←10 STEP 1 UNTIL 20 DO OUT(CHAN4,CVXSTR(LFILE[I]));
00540	  OUT(CHAN4,CRLF&"⊂ "&CRLF);
00550	OUT(CHAN4,"⊂ Hint"&TB&"Start"&TB&"Length"&TB&"Example"&TB&"Features"&CRLF);
00560	FOR I←21 STEP 1 UNTIL 127 DO BEGIN
00570	  IF LFILE[I]=0 THEN IF I>0 THEN DONE ELSE BEGIN OUTSTR("No data."&crlf);
00580	    done end;
00590	  L←LFILE[I] LAND '777760000000;
00600	  FOR M←0 STEP 1 UNTIL 126 DO IF L=SYMBOL[M] THEN DONE;
00610	  J←LDB(POINT(14,LFILE[I],27)); K←LDB(POINT(8,LFILE[I],35));
00615	ZOUT:
00620	  OUT(CHAN4,CVSTR(L)&TB&CVS(J)&TB&CVS(K)&TB&SAMPLE[M]&CRLF);
00625	ZZOUT:
00635	  OUTALL(CVSTR(L)&TB&CVS(J)&TB&CVS(K)&TB&SAMPLE[M]);
00640	  OUTSTR(CRLF);
00650	  END; CLOSE(CHAN4);
00660	
00670	OUTSTR(CRLF&"File "&READ1&" has been written."&CRLF&LF);
00680	OUTSTR("Do you want it spooled (Y or CR) ");
00685	IF INCHWL="Y" THEN
00690	  SPOOL(READ1,GETCHAN,0);
00700	END "LISTREAD";
00710	RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN4);
00720	
00730	END "HEAD";